'use strict'
const path = require('path')
const conf=require('../../../../conf.js')
const ExtractTextPlugin = require('extract-text-webpack-plugin')

var type = process.env.NODE_ENV;
exports.cssLoaders = function(options) {
	options = options || {}

	const cssLoader = {
		loader: 'css-loader',
		options: {
			sourceMap: options.sourceMap
		}
	}

	const postcssLoader = {
		loader: 'postcss-loader',
		options: {
			sourceMap: options.sourceMap,
			plugins: (loader) => [
				require('autoprefixer')()
			]
		}
	}
	
	var px2remLoader = {
	    loader: 'px2rem-loader',
	    options: {
	      remUnit: conf.rem//设计稿宽度/10
	    }
	 };
	
	// generate loader string to be used with extract text plugin
	function generateLoaders(loader, loaderOptions) {
		const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
		if(conf.rem){
			loaders.push(px2remLoader);
		}
		if(loader) {
			loaders.push({
				loader: loader + '-loader',
				options: Object.assign({}, loaderOptions, {
					sourceMap: options.sourceMap
				})
			})
		}

		// Extract CSS when that option is specified
		// (which is the case during production build)
		if(type == 'pack') {
			return ExtractTextPlugin.extract({
				use: loaders,
				fallback: 'vue-style-loader'
			})
		} else if(type == 'dev') {
			return ['vue-style-loader'].concat(loaders)
		}
	}

	// https://vue-loader.vuejs.org/en/configurations/extract-css.html
	return {
		css: generateLoaders(),
		postcss: generateLoaders(),
		less: generateLoaders('less'),
		sass: generateLoaders('sass', {
			indentedSyntax: true
		}),
		scss: generateLoaders('sass'),
		stylus: generateLoaders('stylus'),
		styl: generateLoaders('stylus')
	}
}

// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function(options) {
	const output = []
	const loaders = exports.cssLoaders(options)

	for(const extension in loaders) {
		const loader = loaders[extension]
		output.push({
			test: new RegExp('\\.' + extension + '$'),
			use: loader
		})
	}

	return output
}
